home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / mint / mint96sb.zoo / src / genmagic.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-06  |  1.4 KB  |  67 lines

  1. #include "mint.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stddef.h>
  5.  
  6. static void usage P_((void));
  7.  
  8. static void
  9. usage()
  10. {
  11.     fprintf(stderr, "Usage: genmagic outputfile\n");
  12.     exit(2);
  13. }
  14.  
  15. /* conventions:
  16.  * C_XXX is offset of XXX in CONTEXT struct
  17.  * P_XXX is offset of XXX in PROC struct
  18.  */
  19.  
  20. struct magics {
  21.     const char *name;
  22.     long value;
  23. } magics[] = {
  24.     { "C_PTRACE", offsetof(CONTEXT, ptrace)},
  25.     { "C_SFMT", offsetof(CONTEXT, sfmt)},
  26.     { "C_INTERNAL", offsetof(CONTEXT, internal)},
  27.     { "C_SR", offsetof(CONTEXT, sr)},
  28.     { "C_PC", offsetof(CONTEXT, pc)},
  29.     { "C_FSTATE", offsetof(CONTEXT, fstate)},
  30.     { "C_FREGS", offsetof(CONTEXT, fregs)},
  31.     { "C_FCTRL", offsetof(CONTEXT, fctrl)},
  32.     { "C_USP", offsetof(CONTEXT, usp)},
  33.     { "C_SSP", offsetof(CONTEXT, ssp)},
  34.     { "C_TERM", offsetof(CONTEXT, term_vec)},
  35.     { "C_D0", offsetof(CONTEXT, regs)},
  36.     { "C_A0", offsetof(CONTEXT, regs)+32},
  37.     { "P_SYSTIME", offsetof(PROC, systime)},
  38.     { "P_USRTIME", offsetof(PROC, usrtime)},
  39.     { "P_PTRACER", offsetof(PROC, ptracer)},
  40.     { "P_SYSCTXT", offsetof(PROC, ctxt)},
  41.     { (char *)0, 0 }
  42. };
  43.  
  44. int
  45. main(argc, argv)
  46.     int argc;
  47.     char **argv;
  48. {
  49.     FILE *f;
  50.     int i;
  51.  
  52.     if (argc != 2)
  53.         usage();
  54.     f = fopen(argv[1], "w");
  55.     if (!f) {
  56.         perror(argv[1]);
  57.         exit(1);
  58.     }
  59.  
  60.     for (i = 0; magics[i].name; i++) {
  61.         fprintf(f, "%%define %s %ld\n", magics[i].name,
  62.                 magics[i].value);
  63.     }
  64.     fclose(f);
  65.     return 0;
  66. }
  67.